#include<stack>

#include "Stack.h"

//bool  match(const char* str)
//{
//	stack<char> s;
//	int len = strlen(str);
//	int i = 0;
//	while (i < len)
//	{
//		if (str[i] == '(' || str[i] == '{' || str[i] == '[')
//		{
//			s.push(str[i]);
//		}
//		else
//		{
//			if ((str[i] == ')' && s.top() != '(') ||
//				(str[i] == ']' && s.top() != '[') ||
//				(str[i] == '}' && s.top() != '{'))
//				return false;
//			s.pop();
//		}
//		++i;
//	}
//	return s.empty();
//}
//void test01()
//{
//	const char* arr = "{[]}";
//	if (match(arr))
//		cout << "T";
//}

//namespace Wang
//{
//	void test01()
//	{
//		Wang::stack<int> s;
//		s.push(1);
//		s.push(2);
//		s.push(3);
//		s.push(4);
//		while (!s.empty())
//		{
//			cout << s.top() << ' ';
//			s.pop();
//		}
//		
//	}
//}
//int main()
//{
//	Wang::test01();
//	
//	return 0;
//}


class MyQueue {
public:
    MyQueue() {

    }

    void push(int x) {
        _push.push(x);
    }

    int pop() {
        while (!_push.empty())
        {
            _pop.push(_push.top());
            _push.pop();
        }
        int ans = _pop.top();
        _pop.pop();
        return ans;
    }

    int peek() {
        while (!_push.empty())
        {
            _pop.push(_push.top());
            _push.pop();
        }
        return _pop.top();
    }

    bool empty() {
        return _push.empty() && _pop.empty();
    }
private:
    stack<int> _push;
    stack<int> _pop;
};

int main()
{
    MyQueue q;
    q.push(1);
    q.push(2);
    q.push(3);
    cout << q.peek() << endl;
    cout << q.pop() << endl;
    cout << q.pop() << endl;
    cout << q.pop() << endl;
    return 0;
}